package service;

import dto.Account;
import dto.Message;
import java.io.File;
import java.io.FileInputStream;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import java.util.Vector;

public interface ChatServerService extends Remote {

    boolean signUp(Account a) throws RemoteException;

    Boolean sendMail(Account sender) throws RemoteException;

    Boolean sendMail(String sender, String reciever, String title, String message) throws RemoteException;

    void addContact(String mail, Account senderAccount) throws RemoteException;

    Vector<Account> getContactList(ChatClientService myAccount) throws RemoteException;

    Boolean removeContact(String toBeRemoved, ChatClientService client) throws RemoteException;

    void logout(Account account) throws RemoteException;

    SessionInt signIn(ChatClientService a) throws RemoteException, Exception;

    String removeMember(Account accountToRemove,ChatRoomInt memberRoom)throws RemoteException;
    
    void addToMemberList(Account account,ChatRoomInt membersRoom)throws RemoteException;
    
    void setStatus(String status, ChatClientService client) throws RemoteException;

    void sendMessage(Message message, ChatRoomInt cs) throws RemoteException;
    
    void sendBuzz(ChatRoomInt cs)throws RemoteException;

    public boolean checkExistingAccout(Account account) throws RemoteException;

    void friendRequestReply(Account userWhoAdd, Account userWhoReply, int reply) throws RemoteException;

    void checkPinnedFriendRequest(ChatClientService clientService) throws RemoteException;

    void checkPinnedFriendRequestReply(ChatClientService clientService) throws RemoteException;

    public Vector<Message> getOfflineMessage(ChatClientService client) throws RemoteException;

    byte[] download_file(String fileName) throws RemoteException;

    void upload_file(String upfileName,byte[] inputFile, Message mess, ChatRoomInt cs) throws RemoteException;

    String[] getAnnouncement() throws RemoteException;
}
